/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author VICTOR
 */
public class Producto {
    
    private String id_producto;
    private int cantidad;
    private double descuento;
    private String numero_placas;
    private double precio_cd;
    private double precio_sd;
    private Tipo_Producto obj_tip_pro=new Tipo_Producto();

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public double getDescuento() {
        return descuento;
    }

    public void setDescuento(double descuento) {
        this.descuento = descuento;
    }

    public String getId_producto() {
        return id_producto;
    }

    public void setId_producto(String id_producto) {
        this.id_producto = id_producto;
    }

    public String getNumero_placas() {
        return numero_placas;
    }

    public void setNumero_placas(String numero_placas) {
        this.numero_placas = numero_placas;
    }

    public Tipo_Producto getObj_tip_pro() {
        return obj_tip_pro;
    }

    public void setObj_tip_pro(Tipo_Producto obj_tip_pro) {
        this.obj_tip_pro = obj_tip_pro;
    }

    public double getPrecio_cd() {
        return precio_cd;
    }

    public void setPrecio_cd(double precio_cd) {
        this.precio_cd = precio_cd;
    }

    public double getPrecio_sd() {
        return precio_sd;
    }

    public void setPrecio_sd(double precio_sd) {
        this.precio_sd = precio_sd;
    }
    
     public static boolean agregarProducto (Producto obj_a){
       boolean a=false;
      Connection conexion = null;
      try {
          conexion= ControladorBD.darConexionBD();
          CallableStatement st;
          st=conexion.prepareCall("{call sp_registrar_producto(?,?,?,?,?,?,?)}");
          conexion.setAutoCommit(false);
          st.setInt(1,obj_a.getCantidad()); 
          st.setDouble(2,obj_a.getDescuento()); 
          if(obj_a.getNumero_placas() != null){
              if(obj_a.getNumero_placas().length()>0){
                st.setString(3,obj_a.getNumero_placas());
              }
              else{
                st.setString(3,null);
              } 
          }
          else{
              st.setString(3,null);
          }
          st.setDouble(4,obj_a.getPrecio_cd()); 
          st.setDouble(5,obj_a.getPrecio_sd());
          st.setString(6,obj_a.getObj_tip_pro().getId_tipo_producto());
          st.registerOutParameter(7, java.sql.Types.VARCHAR); //intentar extraer el parametro de salida y darselo al codigo
          st.execute();
          if(st.getString(7)!=null){
              a=true;
          }
          st.close();
          conexion.setAutoCommit(true);
          conexion.close();
     }catch(Exception error){
          System.out.println("Error en agregarzona:"+error.getMessage());
          error.printStackTrace();
    }
      return a;
    }
   
       public static ArrayList<Producto>getCargarProducto(){
        ArrayList<Producto> arreglo=null;
        Producto obj = null;
        Connection conexion = null;
        ResultSet rs= null;

        try{
            conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall("{call sp_Listar_Producto()}");
            rs=st.executeQuery();
            //st(1,estado);
            if(rs.next()){
                arreglo=new ArrayList<Producto>();
                do{
                    obj=new Producto();
                    obj.setId_producto(rs.getString("id_producto"));
                    obj.setCantidad(rs.getInt("cantidad"));
                    obj.setDescuento(rs.getDouble("descuento"));
                    obj.setNumero_placas(rs.getString("numero_placas"));
                    obj.setPrecio_cd(rs.getDouble("precio_cd"));
                    obj.setPrecio_sd(rs.getDouble("precio_sd"));
                    Tipo_Producto ob=new Tipo_Producto();
                    ob.setId_tipo_producto(rs.getString("id_tipo_producto"));
                    obj.setObj_tip_pro(ob);
                    arreglo.add(obj);
                }while(rs.next());
            }
        }catch(Exception error) {
            System.out.println("Error en Listado: " + error.getMessage());
            error.getMessage();
        }
        return arreglo;
    
    }

 
}
